Skip to content

chore(website): update to React 19#1064

Merged
fengelniederhammer merged 8 commits intomainfrom
react19
Mar 19, 2026
Merged

chore(website): update to React 19#1064
fengelniederhammer merged 8 commits intomainfrom
react19

Conversation

@fengelniederhammer
Copy link
Contributor

@fengelniederhammer fengelniederhammer commented Mar 9, 2026

Summary

Uses the new components version that has type declarations that are compatible with React 19: GenSpectrum/dashboard-components#673

The main change in React 19 for us is that web components have better support in React. We don't need to serialize attributes anymore, we can simply pass them to the component as we would with any other component / native HTML element.

Screenshot

PR Checklist

- [ ] All necessary documentation has been adapted.

  • The implemented feature is covered by an appropriate test.

@vercel
Copy link

vercel bot commented Mar 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dashboards Ready Ready Preview, Comment Mar 18, 2026 10:18am

Request Review

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the website’s React runtime to React 19 and adapts the codebase (notably the GenSpectrum web-component wrappers) to updated React typings/behavior and @genspectrum/dashboard-components APIs.

Changes:

  • Bump dependencies to React 19 / React DOM 19 and @genspectrum/dashboard-components@^1.16.0.
  • Update GenSpectrum web-component integrations to pass structured values (objects/arrays/numbers) instead of JSON.stringify(...).
  • Fix TypeScript compatibility issues introduced by the upgrade (ref nullability, onInput typing, event target access, component rename typo).

Reviewed changes

Copilot reviewed 25 out of 26 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
website/src/styles/containers/Modal.tsx Updates modalRef typing to reflect React 19 ref nullability.
website/src/layouts/OrganismPage/OrganismViewPageLayout.tsx Passes mutationAnnotations directly to <gs-app> instead of JSON string.
website/src/components/views/wasap/WasapPage.tsx Passes structured mutationAnnotations/mutationLinkTemplate props into <gs-app>.
website/src/components/subscriptions/overview/SubscriptionEntry.tsx Aligns dialog ref prop typing with React 19 ref nullability.
website/src/components/pageStateSelectors/VariantSelector.tsx Uses event.currentTarget.value for safer typed input handling.
website/src/components/pageStateSelectors/BaselineSelector.tsx Fixes GsNumberRangeFilter import/usage after renaming typo.
website/src/components/genspectrum/VariantQueryFilter.tsx Switches onInput prop typing from change-event to input-event handler.
website/src/components/genspectrum/GsTextFilter.tsx Updates ref initialization and passes lapisFilter as structured value.
website/src/components/genspectrum/GsStatistics.tsx Passes numerator/denominator filters as structured values.
website/src/components/genspectrum/GsSequencesByLocation.tsx Passes structured filters/views and uses views constants for some view values.
website/src/components/genspectrum/GsRelativeGrowthAdvantage.tsx Passes filters directly and uses numeric generationTime.
website/src/components/genspectrum/GsQueriesOverTime.tsx Removes JSON stringification for filters/queries/views and related optional props.
website/src/components/genspectrum/GsPrevalenceOverTime.tsx Removes JSON stringification for filters/views/config arrays.
website/src/components/genspectrum/GsNumberSequencesOverTime.tsx Removes JSON stringification for filter and views props.
website/src/components/genspectrum/GsNumberRangeFilter.tsx Renames component to GsNumberRangeFilter, updates ref handling, passes structured value.
website/src/components/genspectrum/GsMutationsOverTime.tsx Removes JSON stringification for filter/views and optional props.
website/src/components/genspectrum/GsMutations.tsx Passes structured filters and uses views constants array.
website/src/components/genspectrum/GsMutationFilter.tsx Updates ref init and passes structured initial/enabled mutation type values.
website/src/components/genspectrum/GsMutationComparison.tsx Passes structured filters and uses views constants.
website/src/components/genspectrum/GsLocationFilter.tsx Updates ref init and passes structured fields/filter/value.
website/src/components/genspectrum/GsLineageFilter.tsx Updates ref init and passes structured value/lapisFilter.
website/src/components/genspectrum/GsDateRangeFilter.tsx Updates ref init and passes structured dateRangeOptions and value.
website/src/components/genspectrum/GsAggregate.tsx Removes JSON stringification for views/fields/filter.
website/src/components/genspectrum/AdvancedQueryFilter.tsx Switches to onInput event typing and uses event.currentTarget.value.
website/package.json Bumps React/React DOM and @types/react*, updates dashboard-components dependency.
website/package-lock.json Locks updated dependency graph for the React 19 + dashboard-components bump.
Files not reviewed (1)
  • website/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

@fhennig fhennig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did some spot checking locally, looks all good to me!

The change that we don't have to serialize is great.

@fengelniederhammer fengelniederhammer merged commit 8e8d24d into main Mar 19, 2026
9 checks passed
@fengelniederhammer fengelniederhammer deleted the react19 branch March 19, 2026 07:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants